/* 有获取表格数据的页面的排序移动数据逻辑
 * dependence - tableCoreMixin， tableBtnLoadingMixin, ConfirmTempMixin
 * 需要提供 - currentSortApi - 当前页面的排序移动接口
-------------------------- */
const tableSortMixin = {
  data () {
    return {
      sort: '', // 排序参数
      currentSort: '' // 当前排序操作
    }
  },
  methods: {
    // 排序单个
    sortOne (id, index, sort) {
      this.selectIds = id
      this.currentSort = this._sortRule(sort)
      this.AsyncLoading(this.currentSort, index, this.sortApi)
    },
    // 批量排序已选的数据(idKey: 行数据中id对应的字段名)
    sortSelected (idKey, sort) {
      if (!this.selectList.length) return this.$message.warning('选择数据后才能操作')
      this.currentSort = this._sortRule(sort)
      this.selectIds = this.selectList.map(item => item[idKey]).join(',')
      this.ConfirmTemp(`确认${this.currentSort}选中的${this.selectList.length}条数据吗`, () => {
        this.AsyncLoading(this.currentSort, this.sortApi)
      })
    },
    // 排序接口
    async sortApi () {
      const [ err ] = await this.currentSortApi()
      if (err) return this.$message.error('操作失败')
      this.$message.success(`${this.currentSort}成功`)
      this.getTableData()
    },
    // 排序规则(后台默认：1为上升,-1为下降)
    _sortRule (sort) {
      this.sort = sort
      return sort === '1' ? '上移' : '下移'
    }
  }
}

export default tableSortMixin
